Below is a collection of spatial datasets used in this project.
King County Subdivision Boundary
Tracts in King County
Although this assessment is primarily focused on three communities within the Seattle CCD subdivision of King County, one of the indicators (housing market conditions) uses neighboring tracts to determine displacement risk. Some of the neighboring tracts are part of other county subdivision, but rather than targeting just those specific tracts, this method collects data for all King County tracts and then runs the analysis on the appropriate subsets.
In the absence of a straight-forward method for identifying all the census tracts in the Seattle CCD subdivision of King County, it is possible to extract this information from American Factfinder. This tutorial describes how to use the American Factfinder interface to extract a list of all “all tracts within (or partially within) a census place”; substituting “county subdivision” for “place” will retrieve the desired results.
Puget Sound Waterbodies
These are useful for “clipping” census geographies whose boundaries extend into waterbodies.
KC Tracts Without (Western) Waterbodies
LS0tCmRmX3ByaW50OiB0aWJibGUKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICBwZGZfZG9jdW1lbnQ6CiAgICBrZWVwX3RleDogeWVzCmFsd2F5c19hbGxvd19odG1sOiB5ZXMKLS0tCgpgYGB7ciBtaXNjLXNldHVwLCBlY2hvID0gRkFMU0UsIHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRSxjb21tZW50PUZBTFNFfQpsaWJyYXJ5KG1hZ3JpdHRyKQpsaWJyYXJ5KG9wZXJhdG9yLnRvb2xzKQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KHJwcm9qcm9vdCkKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkocmdkYWwpCmxpYnJhcnkoc3ApCmxpYnJhcnkocmdlb3MpCmxpYnJhcnkobWlzY2dpcykKbGlicmFyeSh0aWdyaXMpCmxpYnJhcnkobGVhZmxldCkKbGlicmFyeShnZ3RoZW1lcykKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KGRvd25sb2FkZXIpCmxpYnJhcnkobWlzY2dpcykKbGlicmFyeShzZikKcm9vdCA8LSBycHJvanJvb3Q6OmlzX3JzdHVkaW9fcHJvamVjdApyb290X2ZpbGUgPC0gcm9vdCRtYWtlX2ZpeF9maWxlKCkKYGBgCgpgYGB7ciBtaXNjLWNvbG9yc30KZ3JlZW4gPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W1siZ3JlZW4iXV0KYmx1ZSA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbWyJibHVlIl1dCm9yYW5nZSA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbWyJvcmFuZ2UiXV0KcmVkIDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtbInJlZCJdXQp0ZWFsIDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtbInRlYWwiXV0KcGFsX3JnYl80IDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtjKCJyZWQiLCJnb2xkIiwiZ3JlZW4iLCJibHVlIildICU+JSB1bmxpc3QgJT4lIHBhbGV0dGUoKQpwYWxfcmdiXzQgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W2MoInJlZCIsImdvbGQiLCJncmVlbiIsImJsdWUiKV0gJT4lIHVubGlzdCAlPiUgcGFsZXR0ZSgpCnBhbF9yZ2JfNiA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbYygicmVkIiwiZ29sZCIsImdyZWVuIiwiYmx1ZSIsIm9yYW5nZSIsInB1cnBsZSIpXSAlPiUgdW5saXN0ICU+JSBwYWxldHRlKCkKcGFsX3JnYl82IDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtjKCJyZWQiLCJnb2xkIiwiZ3JlZW4iLCJibHVlIiwib3JhbmdlIiwicHVycGxlIildICU+JSB1bmxpc3QgJT4lIHBhbGV0dGUoKQpgYGAKCkJlbG93IGlzIGEgY29sbGVjdGlvbiBvZiBzcGF0aWFsIGRhdGFzZXRzIHVzZWQgaW4gdGhpcyBwcm9qZWN0LgoKIyMjIFNlYXR0bGUgQm91bmRhcnkgey19CgpgYGB7ciBtaXNjLXNlYS1ib3VuZCwgZmlnLmNhcD0iU2VhdHRsZVwncyBnZW9ncmFwaGljIGJvdW5kYXJ5In0KCmlmKCFmaWxlLmV4aXN0cyhyb290X2ZpbGUoJzEtZGF0YS80LWludGVyaW0vc2VhdHRsZS1zZi5yZHMnKSkpewogICAgICAgIHRpZ3Jpczo6cGxhY2VzKHN0YXRlID0gIldBIikgJT4lCiAgICAgICAgICAgICAgICB0aWdyaXM6OmZpbHRlcl9wbGFjZShwbGFjZSA9ICJTZWF0dGxlIikgJT4lCiAgICAgICAgICAgICAgICBzcFRyYW5zZm9ybShDUlNvYmogPSBjcnNfcHJvaikgJT4lIAogICAgICAgICAgICAgICAgc3RfYXNfc2YoKSAlPiUgCiAgICAgICAgICAgICAgICBtaXNjZ2lzOjpjb2VyY2VfdG9fZ2VvbShzZjo6c3RfbXVsdGlwb2x5Z29uKSAlPiUgCiAgICAgICAgICAgICAgICB3cml0ZV9yZHMocm9vdF9maWxlKCcxLWRhdGEvNC1pbnRlcmltL3NlYXR0bGUtc2YucmRzJykpCiAgICAgICAgCn0KCnNlYV9zZiA8LSByZWFkX3Jkcyhyb290X2ZpbGUoJzEtZGF0YS80LWludGVyaW0vc2VhdHRsZS1zZi5yZHMnKSkKCmdyZWVuIDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtbImdyZWVuIl1dCgpteUxmbHRHcmV5KGRhdGEgPSBhcyhzZWFfc2YsJ1NwYXRpYWwnKSkgJT4lIAogICAgICAgIG15TGZsdE9wdHMoKSAlPiUgCiAgICAgICAgYWRkUG9seWdvbnMoY29sb3IgPSBncmVlbixvcGFjaXR5ID0gMSxmaWxsQ29sb3IgPSBncmVlbixmaWxsT3BhY2l0eSA9IC41KQoKYGBgCgojIyMgS2luZyBDb3VudHkgU3ViZGl2aXNpb24gQm91bmRhcnkgey19CgpgYGB7ciBtaXNjLXNlYS1jY2QsIGZpZy5jYXA9IlNlYXR0bGUgU3ViZGl2aXNpb24gb2YgS2luZyBDb3VudHlcJ3MgZ2VvZ3JhcGhpYyBib3VuZGFyeSJ9CgppZighZmlsZS5leGlzdHMocm9vdF9maWxlKCcxLWRhdGEvNC1pbnRlcmltL3NlYXR0bGUtY2NkLXNmLnJkcycpKSl7CiAgICAgICAgdGlncmlzOjpjb3VudHlfc3ViZGl2aXNpb25zKHN0YXRlID0gIjUzIixjb3VudHkgPSAiMDMzIikgJT4lIAogICAgICAgICAgICAgICAgc3Vic2V0KE5BTUUgPT0gIlNlYXR0bGUiKSAlPiUgCiAgICAgICAgICAgICAgICBzcFRyYW5zZm9ybShDUlNvYmogPSBjcnNfcHJvaikgJT4lIAogICAgICAgICAgICAgICAgc3RfYXNfc2YoKSAlPiUgCiAgICAgICAgICAgICAgICBtaXNjZ2lzOjpjb2VyY2VfdG9fZ2VvbShzZjo6c3RfbXVsdGlwb2x5Z29uKSAlPiUgCiAgICAgICAgICAgICAgICB3cml0ZV9yZHMocm9vdF9maWxlKCcxLWRhdGEvNC1pbnRlcmltL3NlYXR0bGUtY2NkLXNmLnJkcycpKQp9CgpzZWFfY2NkX3NmIDwtIHJlYWRfcmRzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS9zZWF0dGxlLWNjZC1zZi5yZHMnKSkKCm15TGZsdEdyZXkoZGF0YSA9IGFzKHNlYV9jY2Rfc2YsJ1NwYXRpYWwnKSkgJT4lIAogICAgICAgIG15TGZsdE9wdHMoKSAlPiUgCiAgICAgICAgYWRkUG9seWdvbnMoY29sb3IgPSBibHVlLG9wYWNpdHkgPSAxLGZpbGxDb2xvciA9IGJsdWUsZmlsbE9wYWNpdHkgPSAuNSkKCmBgYAoKIyMjIFRyYWN0cyBpbiBLaW5nIENvdW50eSB7LX0KQWx0aG91Z2ggdGhpcyBhc3Nlc3NtZW50IGlzIHByaW1hcmlseSBmb2N1c2VkIG9uIHRocmVlIGNvbW11bml0aWVzIHdpdGhpbiB0aGUgU2VhdHRsZSBDQ0Qgc3ViZGl2aXNpb24gb2YgS2luZyBDb3VudHksIG9uZSBvZiB0aGUgaW5kaWNhdG9ycyAoaG91c2luZyBtYXJrZXQgY29uZGl0aW9ucykgdXNlcyBuZWlnaGJvcmluZyB0cmFjdHMgdG8gZGV0ZXJtaW5lIGRpc3BsYWNlbWVudCByaXNrLiBTb21lIG9mIHRoZSBuZWlnaGJvcmluZyB0cmFjdHMgYXJlIHBhcnQgb2Ygb3RoZXIgY291bnR5IHN1YmRpdmlzaW9uLCBidXQgcmF0aGVyIHRoYW4gdGFyZ2V0aW5nIGp1c3QgdGhvc2Ugc3BlY2lmaWMgdHJhY3RzLCB0aGlzIG1ldGhvZCBjb2xsZWN0cyBkYXRhIGZvciBhbGwgS2luZyBDb3VudHkgdHJhY3RzIGFuZCB0aGVuIHJ1bnMgdGhlIGFuYWx5c2lzIG9uIHRoZSBhcHByb3ByaWF0ZSBzdWJzZXRzLgoKSW4gdGhlIGFic2VuY2Ugb2YgYSBzdHJhaWdodC1mb3J3YXJkIG1ldGhvZCBmb3IgaWRlbnRpZnlpbmcgYWxsIHRoZSBjZW5zdXMgdHJhY3RzIGluIHRoZSBTZWF0dGxlIENDRCBzdWJkaXZpc2lvbiBvZiBLaW5nIENvdW50eSwgaXQgaXMgcG9zc2libGUgdG8gZXh0cmFjdCB0aGlzIGluZm9ybWF0aW9uIGZyb20gW0FtZXJpY2FuIEZhY3RmaW5kZXJdKGh0dHBzOi8vZmFjdGZpbmRlci5jZW5zdXMuZ292L2ZhY2VzL25hdi9qc2YvcGFnZXMvaW5kZXgueGh0bWwpLiBUaGlzIFt0dXRvcmlhbF0oaHR0cHM6Ly9hc2suY2Vuc3VzLmdvdi9mYXEucGhwP2lkPTUwMDAmZmFxSWQ9MTYwNSkgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEFtZXJpY2FuIEZhY3RmaW5kZXIgaW50ZXJmYWNlIHRvIGV4dHJhY3QgYSBsaXN0IG9mIGFsbCAiYWxsIHRyYWN0cyB3aXRoaW4gKG9yIHBhcnRpYWxseSB3aXRoaW4pIGEgY2Vuc3VzIHBsYWNlIjsgc3Vic3RpdHV0aW5nICJjb3VudHkgc3ViZGl2aXNpb24iIGZvciAicGxhY2UiIHdpbGwgcmV0cmlldmUgdGhlIGRlc2lyZWQgcmVzdWx0cy4KCmBgYHtyIG1pc2MtdHIta2Mtd3RyfQoKaWYoIWZpbGUuZXhpc3RzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS90ci1rYy13dHItc2YucmRzJykpKXsKICAgICAgICAKICAgICAgICAjIEFsbCBLQyB0cmFjdHMKICAgICAgICB0cl9rY193dHJfc2YgPC0KICAgICAgICAgICAgICAgIHRpZ3Jpczo6dHJhY3RzKHN0YXRlID0gJzUzJyxjb3VudHkgPSAnMDMzJywgeWVhciA9IDIwMTQpICU+JQogICAgICAgICAgICAgICAgc3BUcmFuc2Zvcm0oQ1JTb2JqID0gY3JzX3Byb2opICU+JSAKICAgICAgICAgICAgICAgIHN0X2FzX3NmKCkgJT4lIAogICAgICAgICAgICAgICAgbWlzY2dpczo6Y29lcmNlX3RvX2dlb20oc2Y6OnN0X211bHRpcG9seWdvbikgCiAgICAgICAKICAgICAgICAgIyBTZWF0dGxlIENDRCB0cmFjdHMgCiAgICAgICAgICMgTm90ZTogYmVjYXVzZSB0aGlzIHNlbGVjdGlvbiBpbmNsdWRlcyBhbGwgdHJhY3RzICJ3aXRoaW4gb3IgcGFydGlhbGx5LXdpdGhpbiIgdGhlIFNlYXR0bGUgQ0MsCiAgICAgICAgICMgc2V2ZXJhbCB0cmFjdCBHRU9JRHMgYXJlIGR1cGxpY2F0ZWQgaW4gdGhlIHNlbGVjdGlvbi4gRm9yIHRoZSBzYWtlIG9mIGNsYXJpdHksIHRoZXNlIGR1cGxpY2F0ZXMKICAgICAgICAgIyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBmaW5hbCB2ZWN0b3Igb2YgR0VPSURzLgogICAgICAgIHRyX2NjZF9nZW9pZCA8LSAKICAgICAgICAgICAgICAgIHJlYWRfY3N2KAogICAgICAgICAgICAgICAgICAgICAgICByb290X2ZpbGUoJzEtZGF0YS8zLWV4dGVybmFsL21hbnVhbC9zZWF0dGxlLWNjZC9BQ1NfMTJfNVlSX0IwMTAwMS9BQ1NfMTJfNVlSX0IwMTAwMV93aXRoX2Fubi5jc3YnKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoSWQyID0gY29sX2NoYXJhY3RlcigpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHNraXAgPSAxKSAlPiUgCiAgICAgICAgICAgICAgICBtdXRhdGUoTkVXX0dFT0lEMSA9IHN0cl9zdWIoSWQyLDEsNSksCiAgICAgICAgICAgICAgICAgICAgICAgTkVXX0dFT0lEMiA9IHN0cl9zdWIoSWQyLDE2LDIxKSwKICAgICAgICAgICAgICAgICAgICAgICBHRU9JRCA9IHBhc3RlMChORVdfR0VPSUQxLE5FV19HRU9JRDIpLAogICAgICAgICAgICAgICAgICAgICAgIFVOSVFVRSA9ICFkdXBsaWNhdGVkKEdFT0lEKSkgJT4lCiAgICAgICAgICAgICAgICBmaWx0ZXIoVU5JUVVFKSAlPiUgCiAgICAgICAgICAgICAgICBzZWxlY3QoR0VPSUQpICU+JSB1bmxpc3QodXNlLm5hbWVzID0gRikKICAgICAgICAKICAgICAgICAjIENyZWF0ZSBhIGNvdW50eSBTZWF0dGxlIENDRCBzdWJkaXZpc2lvbiBjb2x1bW4gYW5kIHNhdmUKCiAgICAgICAgdHJfa2Nfd3RyX3NmICU+JSAKICAgICAgICAgICAgICAgIG11dGF0ZShTRUFDQ0RfTEdMID0gaWZlbHNlKEdFT0lEICVpbiUgdHJfY2NkX2dlb2lkLFRSVUUsRkFMU0UpKSAlPiUgCiAgICAgICAgICAgICAgICB3cml0ZV9yZHMocm9vdF9maWxlKCcxLWRhdGEvNC1pbnRlcmltL3RyLWtjLXd0ci1zZi5yZHMnKSkKfQoKdHJfa2Nfd3RyX3NmIDwtIHJlYWRfcmRzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS90ci1rYy13dHItc2YucmRzJykpCgpzaG93X3RyX2NjZF93dHJfc2YgPC0gZnVuY3Rpb24oKXsKICAgICAgICAKICAgICAgICBzZWFjY2QgPC0gdHJfa2Nfd3RyX3NmICU+JSBmaWx0ZXIoU0VBQ0NEX0xHTCkKICAgICAgICBvdGhlcl9rYyA8LSB0cl9rY193dHJfc2YgJT4lIGZpbHRlcighU0VBQ0NEX0xHTCkKICAgICAgICAKICAgICAgICBteUxmbHRHcmV5KCkgJT4lIAogICAgICAgICAgICAgICAgbXlMZmx0T3B0cygpICU+JSAKICAgICAgICAgICAgICAgIGFkZFBvbHlnb25zKGRhdGEgPSBhcyhzZWFjY2QsIlNwYXRpYWwiKSx3ZWlnaHQgPSAuNSxjb2xvciA9IGJsdWUsb3BhY2l0eSA9IDEsZmlsbENvbG9yID0gYmx1ZSxmaWxsT3BhY2l0eSA9IC41KSAlPiUgCiAgICAgICAgICAgICAgICBhZGRQb2x5Z29ucyhkYXRhID0gYXMob3RoZXJfa2MsIlNwYXRpYWwiKSx3ZWlnaHQgPSAuNSxjb2xvciA9IG9yYW5nZSxvcGFjaXR5ID0gMSxmaWxsQ29sb3IgPSBvcmFuZ2UsZmlsbE9wYWNpdHkgPSAuNSkKfQoKc2hvd190cl9jY2Rfd3RyX3NmKCkKCgpgYGAKCiMjIyBQdWdldCBTb3VuZCBXYXRlcmJvZGllcyB7LX0KClRoZXNlIGFyZSB1c2VmdWwgZm9yICJjbGlwcGluZyIgY2Vuc3VzIGdlb2dyYXBoaWVzIHdob3NlIGJvdW5kYXJpZXMgZXh0ZW5kIGludG8gd2F0ZXJib2RpZXMuCgpgYGB7ciBtaXNjLXd0ciwgZmlnLmNhcD0iUHVnZXQgU291bmQgd2F0ZXJib2RpZXMifQoKaWYoIWZpbGUuZXhpc3RzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS93dHItc2YucmRzJykpKXsKICAgICAgICBmcF93dHIgPC0gcm9vdF9maWxlKCcxLWRhdGEvMy1leHRlcm5hbC9OSERNYWpvci5nZGInKQoKIyBjaGVjayBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cywgaWYgbm90IHRoZW4gZG93bmxvYWQgaXQKaWYoIWZpbGUuZXhpc3RzKGZwX3d0cikpewogICAgICAgIAogICAgICAgIHVybCA8LSAiZnRwOi8vd3d3LmVjeS53YS5nb3YvZ2lzX2EvaW5sYW5kV2F0ZXJzL05IRC9OSERtYWpvci5nZGIuemlwIiAjIHNhdmUgdGhlIFVSTCBmb3IgdGhlIHdhdGVyYm9kaWVzIGRhdGEKICAgICAgICAKICAgICAgICB0ZW1wIDwtIHRlbXBmaWxlKCkgIyBjcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZSB0byBob2xkIHRoZSBjb21wcmVzc2VkIGRvd25sb2FkCiAgICAgICAgCiAgICAgICAgZG93bmxvYWQodXJsLCBkZXN0ID0gdGVtcCwgbW9kZT0id2IiKSAjIGRvd25sb2FkIHRoZSBmaWxlCiAgICAgICAgCiAgICAgICAgdW56aXAgKHRlbXAsIGV4ZGlyID0gcm9vdF9maWxlKCcxLWRhdGEvMy1leHRlcm5hbC8nKSkgIyBleHRyYWN0IHRoZSBFU1JJIGdlb2RhdGFiYXNlIGZpbGUgdG8gYSBwcm9qZWN0IGZvbGRlcgp9Cgp3dHJfc3AgPC0KICAgICAgICBzdXBwcmVzc1dhcm5pbmdzKHJlYWRPR1IoZHNuID0gZnBfd3RyLCAgICAgICMgY3JlYXRlIGEgd2F0ZXJib2RpZXMgc2hhcGUKICAgICAgICAgICAgICAgIGxheWVyID0gIk5IRF9NYWpvcldhdGVyYm9kaWVzIix2ZXJib3NlID0gRkFMU0UscG9pbnREcm9wWiA9IFRSVUUpKSAlPiUKICAgICAgICBnQnVmZmVyKGJ5aWQ9VFJVRSwgd2lkdGg9MCkgJT4lICMgY2xlYW4gdXAgc2VsZi1pbnRlcnNlY3RpbmcgcG9seWdvbnMKICAgICAgICBzcFRyYW5zZm9ybShDUlNvYmogPSBjcnNfcHJvaikgICMgdHJhbnNmb3JtIHRoZSBwcm9qZWN0aW9uIHRvIG1hdGNoIHRoZSBwcm9qZWN0IHByb2plY3Rpb24Kd3RyX3NmIDwtICAKICAgICAgICB3dHJfc3AgJT4lIAogICAgICAgIHN0X2FzX3NmKCkgJT4lIAogICAgICAgIG1pc2NnaXM6OmNvZXJjZV90b19nZW9tKHN0X211bHRpcG9seWdvbikKCnd0cl9zZiAlPiUgCiAgICAgICAgc3RfaW50ZXJzZWN0cyh4ID0gc2VhX2NjZF9zZix5ID0gLikgJT4lIAogICAgICAgIHVubGlzdCh1c2UubmFtZXMgPSBGKSAlPiUgCiAgICAgICAgd3RyX3NmWy4sXSAlPiUgCiAgICAgICAgd3JpdGVfcmRzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS93dHItc2YucmRzJykpCn0KCnd0cl9zZiA8LSByZWFkX3Jkcyhyb290X2ZpbGUoJzEtZGF0YS80LWludGVyaW0vd3RyLXNmLnJkcycpKQoKc2hvd193dHIgPC0gZnVuY3Rpb24oKXsKICAgICAgICBteUxmbHRHcmV5KGRhdGEgPSBhcyh3dHJfc2YsJ1NwYXRpYWwnKSkgJT4lIAogICAgICAgICAgICAgICAgbXlMZmx0T3B0cygpICU+JSAKICAgICAgICAgICAgICAgIGFkZFBvbHlnb25zKGNvbG9yID0gYmx1ZSwgb3BhY2l0eSA9IDEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ID0gLjUsIGZpbGxDb2xvciA9IGJsdWUsZmlsbE9wYWNpdHkgPSAuNSkgICAgICAgIAp9CgpzaG93X3d0cigpCgpgYGAKCiMjIyBLQyBUcmFjdHMgV2l0aG91dCAoV2VzdGVybikgV2F0ZXJib2RpZXMgey19CmBgYHtyIG1pc2MtdHJhY3RzLWNjZC1uby13dHJ9CgppZighZmlsZS5leGlzdHMocm9vdF9maWxlKCcxLWRhdGEvNC1pbnRlcmltL3RyLWtjLXNmLnJkcycpKSl7CiAgICAgICAgdHJfa2Nfd3RyX3NmICU+JSAKICAgICAgICAgICAgICAgIGZpbHRlcihUUkFDVENFICUhaW4lICc5OTAxMDAnKSAlPiUgIyByZW1vdmUgdGhlIFB1Z2V0IFNvdW5kIHRyYWN0CiAgICAgICAgICAgICAgICBtdXRhdGUoZ2VvbWV0cnkgPSBzdF9kaWZmZXJlbmNlKGdlb21ldHJ5LHN0X3VuaW9uKHd0cl9zZikpKSAlPiUgCiAgICAgICAgICAgICAgICBjb2VyY2VfdG9fZ2VvbShzdF9tdWx0aXBvbHlnb24pICU+JSAKICAgICAgICAgICAgICAgIHdyaXRlX3Jkcyhyb290X2ZpbGUoJzEtZGF0YS80LWludGVyaW0vdHIta2Mtc2YucmRzJykpCn0KCnRyX2tjX3NmIDwtIHJlYWRfcmRzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS90ci1rYy1zZi5yZHMnKSkKCnNob3dfdHJfa2Nfc2YgPC0gZnVuY3Rpb24oKXsKICAgICAgICAKICAgICAgICBzZWFjY2QgPC0gdHJfa2Nfc2YgJT4lIGZpbHRlcihTRUFDQ0RfTEdMKQogICAgICAgIG90aGVyX2tjIDwtIHRyX2tjX3NmICU+JSBmaWx0ZXIoIVNFQUNDRF9MR0wpCiAgICAgICAgCiAgICAgICAgbXlMZmx0R3JleSgpICU+JSAKICAgICAgICAgICAgICAgIG15TGZsdE9wdHMoKSAlPiUgCiAgICAgICAgYWRkUG9seWdvbnMoZGF0YSA9IGFzKHNlYWNjZCwiU3BhdGlhbCIpLHdlaWdodCA9IC41LGNvbG9yID0gYmx1ZSxvcGFjaXR5ID0gMSxmaWxsQ29sb3IgPSBibHVlLGZpbGxPcGFjaXR5ID0gLjUpICU+JSAKICAgICAgICBhZGRQb2x5Z29ucyhkYXRhID0gYXMob3RoZXJfa2MsIlNwYXRpYWwiKSx3ZWlnaHQgPSAuNSxjb2xvciA9IG9yYW5nZSxvcGFjaXR5ID0gMSxmaWxsQ29sb3IgPSBvcmFuZ2UsZmlsbE9wYWNpdHkgPSAuNSkKfQoKc2hvd190cl9rY19zZigpCgoKCmBgYAoK